1 Introduction

Every year, the New York State Forest Rangers have to rescue people who use the outdoors for recreation. Some get injured and need evacuation, some get lost and need search and rescue, but all put a burden on our park services resources. Any efforts to educate people on how to be safer and more responsible in nature will go a long way towards helping alleviate this burden but the Department of Environmental Conservation does not have the resources to market to everyone. In our analysis, we will try to identify groups that are at a greater risk of needing evacuation so we can make a recommendation on where best to allocate resources on awareness. We decided to focus on the Adirondack Park because of the region’s high traffic and ability to attract inexperienced visitors. &&&&The variables of interest are the amount of rangers involved, amount of people being rescued, age and gender of rescued, and the type of activity that caused the accident. We will be analyzing the rescues happening in the Adirondack Park to try to find groups of people who are at a greater risk of needing rescue and would therefore benefit more from targeted awareness campaigns.

2 Background

This is observational data originally found on Data World (https://data.world/) from the NYSDEC on forest ranger incident reports. In order to help understand the data it would be helpful for the reader to have previous knowledge about recreational activities in New York State forests and the risks involved with those activities.

3 Methods and Results

The two plots below are created from location of the rescues within New York State. Looking at the plot of the entire state, there are two regions where rescues occur more frequently, the high peaks being the larger area of concentration. Because of this concentration, a second plot was made to focus on the rescues within the Adirondack mountains.

3.1 Location Found of all Incidents

tmap mode set to interactive viewing

3.2 Location Found in Adirondacks Grouped by Age

tmap mode set to interactive viewing

The data has many different variables and presented to us in a large confusing table. The following code sorts the variables we are interested in, and creates a small table for each one.

As you can see, there is more chainsaw then flood victims.


        F    M 
   6  827 1245 

Fugitive Search        Recovery          Rescue          Search 
              2              60             902            1114 

            Aircraft               Biking              Boating 
                   8                   12                  133 
             Camping             Chainsaw    Climbing:Rock/Ice 
                  60                    3                   35 
            Criminal           Despondent              Fishing 
                   4                   20                   18 
        Flood Victim               Hiking     Horseback riding 
                   1                 1512                    2 
             Hunting        Motor vehicle Off road vehicle/ATV 
                  74                    6                   16 
             Runaway               Skiing           Snowmobile 
                  17                   23                   63 
            Stranded             Swimming              Walking 
                   3                   26                   40 
          Whitewater 
                   2 

Check correlation between variables.

There seems to be a correlation between the subject’s age and what type of response is typically needed. It can be concluded that as people get older, they may become more familiar with the land, or simply be more careful with their activities. Search and Rescue responses are the only type that occur for people 30 and under, proving that the younger people should probably have more training on certain skills before traveling into the mountains alone. Although, the mean is around 35 to 40 years old, meaning that mostly people over 30 are more common in general in the area, and therefore needing the help just as much. Overall all people traversing into the mountains should have better safety awareness before going out alone, in case any problems occur. Another important point to make about this data is the noticable correlation between older people and recovery. As we all know, as we age our bodies are not as capable as they used to be, meaning they are more likely to be injured, causing a need to be rescued. One way to decrease the need for rescues could be extra training about safety precautions and give fair warnings about certain activities. For example if a hike has one area that gets slippery before the rest, put up more signs or make sure it is mentioned before anyone even begins the excursion.

Warning: Removed 70 rows containing non-finite values (stat_boxplot).

Mean ages
Recovery=  50.8
Rescue=  39.83433
Search=  35.26649

Perform at least one relevant hypothesis test.

residuals vs fitted normal QQ scale location residuals vs leverage


Call:
lm(formula = number_of_rangers_involved ~ subject_age, data = raw_adk_data)

Residuals:
   Min     1Q Median     3Q    Max 
-2.536 -2.207 -1.240  0.590 80.700 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 3.142535   0.219316  14.329   <2e-16 ***
subject_age 0.004627   0.005212   0.888    0.375    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.39 on 2006 degrees of freedom
  (70 observations deleted due to missingness)
Multiple R-squared:  0.0003927, Adjusted R-squared:  -0.0001056 
F-statistic: 0.7882 on 1 and 2006 DF,  p-value: 0.3748

The first hypothesis test was a two-tailed test to find the difference between between amount of males and females.


    Welch Two Sample t-test

data:  female$subject_age and male$subject_age
t = -3.176, df = 1828.6, p-value = 0.001518
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -4.301948 -1.017200
sample estimates:
mean of x mean of y 
 36.05625  38.71582 

The second hypothesis test performed was a single-tailed hypothesis to see if the ages between rescued males and females differ.
The null hypothesis is mu_f - mu_m = 0 The alternative hypothesis is mu_f - mu_m < 0 The t-test is performed to find the difference between the two samples. After the t-test is run, the value is -3.176, meaning we reject the null hypothesis because the difference between males and females is not 0.


    Welch Two Sample t-test

data:  female$subject_age and male$subject_age
t = -3.176, df = 1828.6, p-value = 0.0007591
alternative hypothesis: true difference in means is less than 0
95 percent confidence interval:
      -Inf -1.281465
sample estimates:
mean of x mean of y 
 36.05625  38.71582 

Check the various assumptions of for statistical tests.


Call:
lm(formula = number_of_rangers_involved ~ subject_age, data = raw_adk_data)

Residuals:
   Min     1Q Median     3Q    Max 
-2.536 -2.207 -1.240  0.590 80.700 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 3.142535   0.219316  14.329   <2e-16 ***
subject_age 0.004627   0.005212   0.888    0.375    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.39 on 2006 degrees of freedom
  (70 observations deleted due to missingness)
Multiple R-squared:  0.0003927, Adjusted R-squared:  -0.0001056 
F-statistic: 0.7882 on 1 and 2006 DF,  p-value: 0.3748

For the linear regression analysis, interpret coefficients and/or make relevant predictions and summarize their meaning.

Warning: Removed 70 rows containing missing values (geom_point).

4 Conclusions

References

Data.world https://data.world/data-ny-gov/u6hu-h7p5

LS0tDQp0aXRsZTogIlNlYXJjaCBhbmQgUmVzY3VlcyBpbiB0aGUgQWRpcm9uZGFja3MiDQphdXRob3I6ICJLcmlzdGluYSBGcmFua2xpbiwgUm9zaWUgRGVsd2ljaGUsIENvbm5vciBIYXRoYXdheSwgSmFja2llIEJ1ZGthIg0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazoNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCi0tLQ0KDQojIEludHJvZHVjdGlvbg0KDQpFdmVyeSB5ZWFyLCB0aGUgTmV3IFlvcmsgU3RhdGUgRm9yZXN0IFJhbmdlcnMgaGF2ZSB0byByZXNjdWUgcGVvcGxlIHdobyB1c2UgdGhlIG91dGRvb3JzIGZvciByZWNyZWF0aW9uLiBTb21lIGdldCBpbmp1cmVkIGFuZCBuZWVkIGV2YWN1YXRpb24sIHNvbWUgZ2V0IGxvc3QgYW5kIG5lZWQgc2VhcmNoIGFuZCByZXNjdWUsIGJ1dCBhbGwgcHV0IGEgYnVyZGVuIG9uIG91ciBwYXJrIHNlcnZpY2VzIHJlc291cmNlcy4gQW55IGVmZm9ydHMgdG8gZWR1Y2F0ZSBwZW9wbGUgb24gaG93IHRvIGJlIHNhZmVyIGFuZCBtb3JlIHJlc3BvbnNpYmxlIGluIG5hdHVyZSB3aWxsIGdvIGEgbG9uZyB3YXkgdG93YXJkcyBoZWxwaW5nIGFsbGV2aWF0ZSB0aGlzIGJ1cmRlbiBidXQgdGhlIERlcGFydG1lbnQgb2YgRW52aXJvbm1lbnRhbCBDb25zZXJ2YXRpb24gZG9lcyBub3QgaGF2ZSB0aGUgcmVzb3VyY2VzIHRvIG1hcmtldCB0byBldmVyeW9uZS4gSW4gb3VyIGFuYWx5c2lzLCB3ZSB3aWxsIHRyeSB0byBpZGVudGlmeSBncm91cHMgdGhhdCBhcmUgYXQgYSBncmVhdGVyIHJpc2sgb2YgbmVlZGluZyBldmFjdWF0aW9uIHNvIHdlIGNhbiBtYWtlIGEgcmVjb21tZW5kYXRpb24gb24gd2hlcmUgYmVzdCB0byBhbGxvY2F0ZSByZXNvdXJjZXMgb24gYXdhcmVuZXNzLiBXZSBkZWNpZGVkIHRvIGZvY3VzIG9uIHRoZSBBZGlyb25kYWNrIFBhcmsgYmVjYXVzZSBvZiB0aGUgcmVnaW9uJ3MgaGlnaCB0cmFmZmljIGFuZCBhYmlsaXR5IHRvIGF0dHJhY3QgaW5leHBlcmllbmNlZCB2aXNpdG9ycy4gJiYmJlRoZSB2YXJpYWJsZXMgb2YgaW50ZXJlc3QgYXJlIHRoZSBhbW91bnQgb2YgcmFuZ2VycyBpbnZvbHZlZCwgYW1vdW50IG9mIHBlb3BsZSBiZWluZyByZXNjdWVkLCBhZ2UgYW5kIGdlbmRlciBvZiByZXNjdWVkLCBhbmQgdGhlIHR5cGUgb2YgYWN0aXZpdHkgdGhhdCBjYXVzZWQgdGhlIGFjY2lkZW50LiBXZSB3aWxsIGJlIGFuYWx5emluZyB0aGUgcmVzY3VlcyBoYXBwZW5pbmcgaW4gdGhlIEFkaXJvbmRhY2sgUGFyayB0byB0cnkgdG8gZmluZCBncm91cHMgb2YgcGVvcGxlIHdobyBhcmUgYXQgYSBncmVhdGVyIHJpc2sgb2YgbmVlZGluZyByZXNjdWUgYW5kIHdvdWxkIHRoZXJlZm9yZSBiZW5lZml0IG1vcmUgZnJvbSB0YXJnZXRlZCBhd2FyZW5lc3MgY2FtcGFpZ25zLg0KDQouLi4NCg0KIyBCYWNrZ3JvdW5kDQoNClRoaXMgaXMgb2JzZXJ2YXRpb25hbCBkYXRhIG9yaWdpbmFsbHkgZm91bmQgb24gRGF0YSBXb3JsZCAoaHR0cHM6Ly9kYXRhLndvcmxkLykgZnJvbSB0aGUgTllTREVDIG9uIGZvcmVzdCByYW5nZXIgaW5jaWRlbnQgcmVwb3J0cy4gSW4gb3JkZXIgdG8gaGVscCB1bmRlcnN0YW5kIHRoZSBkYXRhIGl0IHdvdWxkIGJlIGhlbHBmdWwgZm9yIHRoZSByZWFkZXIgdG8gaGF2ZSBwcmV2aW91cyBrbm93bGVkZ2UgYWJvdXQgcmVjcmVhdGlvbmFsIGFjdGl2aXRpZXMgaW4gTmV3IFlvcmsgU3RhdGUgZm9yZXN0cyBhbmQgdGhlIHJpc2tzIGludm9sdmVkIHdpdGggdGhvc2UgYWN0aXZpdGllcy4gDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGluY2x1ZGU9RkFMU0V9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGphbml0b3IpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkodGlkeW1vZGVscykNCmxpYnJhcnkoaHR0cikNCmxpYnJhcnkoanNvbmxpdGUpDQpsaWJyYXJ5KHNmKQ0KbGlicmFyeSh0bWFwKQ0KbGlicmFyeSAocmVhZHIpDQpgYGANCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0NCnVybGZpbGU9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9KYUJ1ZGthL1NUQVQzODNfRjIxL1Byb2plY3QvU1JfZGF0YS5jc3YiDQpyYXdfc3JfZGF0YTwtcmVhZF9jc3YodXJsKHVybGZpbGUpKSAlPiUNCiAgY2xlYW5fbmFtZXMoKQ0KYGBgDQouLi4NCg0KDQojIE1ldGhvZHMgYW5kIFJlc3VsdHMNCg0KDQoNCg0KVGhlIHR3byBwbG90cyBiZWxvdyBhcmUgY3JlYXRlZCBmcm9tIGxvY2F0aW9uIG9mIHRoZSByZXNjdWVzIHdpdGhpbiBOZXcgWW9yayBTdGF0ZS4gIExvb2tpbmcgYXQgdGhlIHBsb3Qgb2YgdGhlIGVudGlyZSBzdGF0ZSwgdGhlcmUgYXJlIHR3byByZWdpb25zIHdoZXJlIHJlc2N1ZXMgb2NjdXIgbW9yZSBmcmVxdWVudGx5LCB0aGUgaGlnaCBwZWFrcyBiZWluZyB0aGUgbGFyZ2VyIGFyZWEgb2YgY29uY2VudHJhdGlvbi4gIEJlY2F1c2Ugb2YgdGhpcyBjb25jZW50cmF0aW9uLCBhIHNlY29uZCBwbG90IHdhcyBtYWRlIHRvIGZvY3VzIG9uIHRoZSByZXNjdWVzIHdpdGhpbiB0aGUgQWRpcm9uZGFjayBtb3VudGFpbnMuIA0KDQojIyBMb2NhdGlvbiBGb3VuZCBvZiBhbGwgSW5jaWRlbnRzDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KcmF3X3NyX21hcCA8LSByYXdfc3JfZGF0YVtjb21wbGV0ZS5jYXNlcyhyYXdfc3JfZGF0YSksIF0gJT4lDQpzdF9hc19zZihjb29yZHMgPSBjKCJsb2NhdGlvbl9mb3VuZF9sb25naXR1ZGUiLCAibG9jYXRpb25fZm91bmRfbGF0aXR1ZGUiKSwgY3JzID0gNDMyNikNCnRtYXBfbW9kZSgidmlldyIpDQp0bV9zaGFwZShyYXdfc3JfbWFwKSArDQogIHRtX2RvdHMoc2l6ZT0wLjAyLGNvbD0icmVkIiwgYWxwaGEgPSAwLjUpICsgdG1fbGVnZW5kKG91dHNpZGUgPSBUUlVFKSANCmBgYA0KIyMgTG9jYXRpb24gRm91bmQgaW4gQWRpcm9uZGFja3MgR3JvdXBlZCBieSBBZ2UNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQphZGtfZ2VvbV9kYXRhIDwtIHJhd19hZGtfZGF0YVtjb21wbGV0ZS5jYXNlcyhyYXdfYWRrX2RhdGEpLCBdICU+JQ0Kc3RfYXNfc2YoY29vcmRzID0gYygibG9jYXRpb25fZm91bmRfbG9uZ2l0dWRlIiwgImxvY2F0aW9uX2ZvdW5kX2xhdGl0dWRlIiksIGNycyA9IDQzMjYpIA0KdG1hcF9tb2RlKCJ2aWV3IikNCnRtX3NoYXBlKGFka19nZW9tX2RhdGEpICsNCiAgdG1fZG90cyhzaXplPTAuMDIsY29sPSJzdWJqZWN0X2FnZSIsIGFscGhhID0gMC43LCBwYWxldHRlID0gIlNwZWN0cmFsIikNCmBgYA0KVGhlIGRhdGEgaGFzIG1hbnkgZGlmZmVyZW50IHZhcmlhYmxlcyBhbmQgcHJlc2VudGVkIHRvIHVzIGluIGEgbGFyZ2UgY29uZnVzaW5nIHRhYmxlLiAgVGhlIGZvbGxvd2luZyBjb2RlIHNvcnRzIHRoZSB2YXJpYWJsZXMgd2UgYXJlIGludGVyZXN0ZWQgaW4sIGFuZCBjcmVhdGVzIGEgc21hbGwgdGFibGUgZm9yIGVhY2ggb25lLg0KDQpBcyB5b3UgY2FuIHNlZSwgdGhlcmUgaXMgbW9yZSBjaGFpbnNhdyB0aGVuIGZsb29kIHZpY3RpbXMuDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQpjb3VudF9nZW5kZXIgPC0gIHRhYmxlKHJhd19hZGtfZGF0YVsnc3ViamVjdF9nZW5kZXInXSkNCmNvdW50X2dlbmRlcg0KY291bnRfcnR5cGUgPC0gdGFibGUocmF3X2Fka19kYXRhWydyZXNwb25zZV90eXBlJ10pDQpjb3VudF9ydHlwZQ0KY291bnRfYWN0aXZpdHkgPC0gdGFibGUocmF3X2Fka19kYXRhWydhY3Rpdml0eSddKQ0KY291bnRfYWN0aXZpdHkNCg0KYGBgDQoNCkNoZWNrIGNvcnJlbGF0aW9uIGJldHdlZW4gdmFyaWFibGVzLiANCg0KDQpUaGVyZSBzZWVtcyB0byBiZSBhIGNvcnJlbGF0aW9uIGJldHdlZW4gdGhlIHN1YmplY3QncyBhZ2UgYW5kIHdoYXQgdHlwZSBvZiByZXNwb25zZSBpcyB0eXBpY2FsbHkgbmVlZGVkLiAgSXQgY2FuIGJlIGNvbmNsdWRlZCB0aGF0IGFzIHBlb3BsZSBnZXQgb2xkZXIsIHRoZXkgbWF5IGJlY29tZSBtb3JlIGZhbWlsaWFyIHdpdGggdGhlIGxhbmQsIG9yIHNpbXBseSBiZSBtb3JlIGNhcmVmdWwgd2l0aCB0aGVpciBhY3Rpdml0aWVzLiAgU2VhcmNoIGFuZCBSZXNjdWUgcmVzcG9uc2VzIGFyZSB0aGUgb25seSB0eXBlIHRoYXQgb2NjdXIgZm9yIHBlb3BsZSAzMCBhbmQgdW5kZXIsIHByb3ZpbmcgdGhhdCB0aGUgeW91bmdlciBwZW9wbGUgc2hvdWxkIHByb2JhYmx5IGhhdmUgbW9yZSB0cmFpbmluZyBvbiBjZXJ0YWluIHNraWxscyBiZWZvcmUgdHJhdmVsaW5nIGludG8gdGhlIG1vdW50YWlucyBhbG9uZS4gIEFsdGhvdWdoLCB0aGUgbWVhbiBpcyBhcm91bmQgMzUgdG8gNDAgeWVhcnMgb2xkLCBtZWFuaW5nIHRoYXQgbW9zdGx5IHBlb3BsZSBvdmVyIDMwIGFyZSBtb3JlIGNvbW1vbiBpbiBnZW5lcmFsIGluIHRoZSBhcmVhLCBhbmQgdGhlcmVmb3JlIG5lZWRpbmcgdGhlIGhlbHAganVzdCBhcyBtdWNoLiAgT3ZlcmFsbCBhbGwgcGVvcGxlIHRyYXZlcnNpbmcgaW50byB0aGUgbW91bnRhaW5zIHNob3VsZCBoYXZlIGJldHRlciBzYWZldHkgYXdhcmVuZXNzIGJlZm9yZSBnb2luZyBvdXQgYWxvbmUsIGluIGNhc2UgYW55IHByb2JsZW1zIG9jY3VyLg0KQW5vdGhlciBpbXBvcnRhbnQgcG9pbnQgdG8gbWFrZSBhYm91dCB0aGlzIGRhdGEgaXMgdGhlIG5vdGljYWJsZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIG9sZGVyIHBlb3BsZSBhbmQgcmVjb3ZlcnkuICBBcyB3ZSBhbGwga25vdywgYXMgd2UgYWdlIG91ciBib2RpZXMgYXJlIG5vdCBhcyBjYXBhYmxlIGFzIHRoZXkgdXNlZCB0byBiZSwgbWVhbmluZyB0aGV5IGFyZSBtb3JlIGxpa2VseSB0byBiZSBpbmp1cmVkLCBjYXVzaW5nIGEgbmVlZCB0byBiZSByZXNjdWVkLiAgT25lIHdheSB0byBkZWNyZWFzZSB0aGUgbmVlZCBmb3IgcmVzY3VlcyBjb3VsZCBiZSBleHRyYSB0cmFpbmluZyBhYm91dCBzYWZldHkgcHJlY2F1dGlvbnMgYW5kIGdpdmUgZmFpciB3YXJuaW5ncyBhYm91dCBjZXJ0YWluIGFjdGl2aXRpZXMuICBGb3IgZXhhbXBsZSBpZiBhIGhpa2UgaGFzIG9uZSBhcmVhIHRoYXQgZ2V0cyBzbGlwcGVyeSBiZWZvcmUgdGhlIHJlc3QsIHB1dCB1cCBtb3JlIHNpZ25zIG9yIG1ha2Ugc3VyZSBpdCBpcyBtZW50aW9uZWQgYmVmb3JlIGFueW9uZSBldmVuIGJlZ2lucyB0aGUgZXhjdXJzaW9uLg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCnJhd19hZGtfZGF0YSAlPiUgDQogIGdncGxvdChhZXMoeSA9IHN1YmplY3RfYWdlLCB4ID0gcmVzcG9uc2VfdHlwZSkpICsNCiAgZ2VvbV9ib3hwbG90KCkrDQogIGdndGl0bGUoIlN1YmplY3QgQWdlIHZzIFJlc3BvbnNlIFR5cGUiKSANCmBgYA0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCnNlYXJjaF9kYXRhIDwtIHJhd19hZGtfZGF0YSAlPiUNCiAgZmlsdGVyKHJlc3BvbnNlX3R5cGU9PSJTZWFyY2giKQ0KcmVzY3VlX2RhdGEgPC0gcmF3X2Fka19kYXRhICU+JQ0KICBmaWx0ZXIocmVzcG9uc2VfdHlwZT09IlJlc2N1ZSIpDQpyZWNvdmVyeV9kYXRhIDwtIHJhd19hZGtfZGF0YSAlPiUNCiAgZmlsdGVyKHJlc3BvbnNlX3R5cGU9PSJSZWNvdmVyeSIpDQpNQXJlY292ZXJ5IDwtIG1lYW4ocmVjb3ZlcnlfZGF0YSRzdWJqZWN0X2FnZSwgbmEucm0gPSAiVFJVRSIpDQpNQXJlc2N1ZSA8LSBtZWFuKHJlc2N1ZV9kYXRhJHN1YmplY3RfYWdlLCBuYS5ybSA9ICJUUlVFIikNCk1Bc2VhcmNoIDwtIG1lYW4oc2VhcmNoX2RhdGEkc3ViamVjdF9hZ2UsIG5hLnJtID0gIlRSVUUiKQ0KY2F0KCdNZWFuIGFnZXMNClJlY292ZXJ5PSAnLE1BcmVjb3ZlcnkpDQpjYXQoJw0KUmVzY3VlPSAnLE1BcmVzY3VlKQ0KY2F0KCcNClNlYXJjaD0gJyxNQXNlYXJjaCkNCmBgYA0KDQpQZXJmb3JtIGF0IGxlYXN0IG9uZSByZWxldmFudCBoeXBvdGhlc2lzIHRlc3QuIA0KDQpyZXNpZHVhbHMgdnMgZml0dGVkDQpub3JtYWwgUVENCnNjYWxlIGxvY2F0aW9uDQpyZXNpZHVhbHMgdnMgbGV2ZXJhZ2UNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQptb2RlbCA9IGxtKG51bWJlcl9vZl9yYW5nZXJzX2ludm9sdmVkIH4gc3ViamVjdF9hZ2UsIGRhdGEgPSByYXdfYWRrX2RhdGEpDQpzdW1tYXJ5KG1vZGVsKQ0KcGxvdChtb2RlbCkNCmBgYA0KDQoNCg0KVGhlIGZpcnN0IGh5cG90aGVzaXMgdGVzdCB3YXMgYSB0d28tdGFpbGVkIHRlc3QgdG8gZmluZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGJldHdlZW4gYW1vdW50IG9mIG1hbGVzIGFuZCBmZW1hbGVzLg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KZmVtYWxlIDwtIHJhd19hZGtfZGF0YSAlPiUNCiAgZmlsdGVyKHN1YmplY3RfZ2VuZGVyID09ICJGIikNCg0KbWFsZSA8LSByYXdfYWRrX2RhdGEgJT4lDQogIGZpbHRlcihzdWJqZWN0X2dlbmRlciA9PSAiTSIpDQoNCmgxIDwtIHQudGVzdChmZW1hbGUkc3ViamVjdF9hZ2UsIG1hbGUkc3ViamVjdF9hZ2UsIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIsIHZhci5lcXVhbCA9IEZBTFNFKQ0KaDENCmBgYA0KDQpUaGUgc2Vjb25kIGh5cG90aGVzaXMgdGVzdCBwZXJmb3JtZWQgd2FzIGEgc2luZ2xlLXRhaWxlZCBoeXBvdGhlc2lzIHRvIHNlZSBpZiB0aGUgYWdlcyBiZXR3ZWVuIHJlc2N1ZWQgbWFsZXMgYW5kIGZlbWFsZXMgZGlmZmVyLiAgDQpUaGUgbnVsbCBoeXBvdGhlc2lzIGlzIG11X2YgLSBtdV9tID0gMA0KVGhlIGFsdGVybmF0aXZlIGh5cG90aGVzaXMgaXMgbXVfZiAtIG11X20gPCAwDQpUaGUgdC10ZXN0IGlzIHBlcmZvcm1lZCB0byBmaW5kIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBzYW1wbGVzLg0KQWZ0ZXIgdGhlIHQtdGVzdCBpcyBydW4sIHRoZSB2YWx1ZSBpcyAtMy4xNzYsIG1lYW5pbmcgd2UgcmVqZWN0IHRoZSBudWxsIGh5cG90aGVzaXMgYmVjYXVzZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG1hbGVzIGFuZCBmZW1hbGVzIGlzIG5vdCAwLg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KDQpmZW1hbGUgPC0gcmF3X2Fka19kYXRhICU+JQ0KICBmaWx0ZXIoc3ViamVjdF9nZW5kZXIgPT0gIkYiKQ0KDQptYWxlIDwtIHJhd19hZGtfZGF0YSAlPiUNCiAgZmlsdGVyKHN1YmplY3RfZ2VuZGVyID09ICJNIikNCg0KaDIgPC0gdC50ZXN0KGZlbWFsZSRzdWJqZWN0X2FnZSwgbWFsZSRzdWJqZWN0X2FnZSwgYWx0ZXJuYXRpdmUgPSAibGVzcyIsIHZhci5lcXVhbCA9IEZBTFNFKQ0KaDINCg0KYGBgDQoNCg0KDQoNCkNoZWNrIHRoZSB2YXJpb3VzIGFzc3VtcHRpb25zIG9mIGZvciBzdGF0aXN0aWNhbCB0ZXN0cy4NCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCm1vZGVsID0gbG0obnVtYmVyX29mX3JhbmdlcnNfaW52b2x2ZWQgfiBzdWJqZWN0X2FnZSwgZGF0YSA9IHJhd19hZGtfZGF0YSkNCnN1bW1hcnkobW9kZWwpDQpwbG90KG1vZGVsKQ0KYGBgDQoNCg0KRm9yIHRoZSBsaW5lYXIgcmVncmVzc2lvbiBhbmFseXNpcywgaW50ZXJwcmV0IGNvZWZmaWNpZW50cyBhbmQvb3IgbWFrZSByZWxldmFudCBwcmVkaWN0aW9ucyBhbmQNCnN1bW1hcml6ZSB0aGVpciBtZWFuaW5nLg0KDQpgYGB7ciBlY2hvPUZBTFNFfQ0KcmF3X2Fka19kYXRhICU+JSANCiAgZ2dwbG90KGFlcyh4ID0gc3ViamVjdF9hZ2UsIHkgPSBudW1iZXJfb2ZfcmFuZ2Vyc19pbnZvbHZlZCkpKw0KICBnZW9tX3BvaW50KCkrDQogIGdlb21fYWJsaW5lKGludGVyY2VwdCA9IDMuMTQyNTM1LCBzbG9wZSA9IDAuMDA0NjI3LCBjb2w9Im1hZ2VudGEiKSsNCiAgZ2d0aXRsZSgiUmFuZ2VycyB0byBBZ2UgUmVncmVzc2lvbiIpIA0KYGBgDQoNCi4uLg0KDQoNCiMgQ29uY2x1c2lvbnMNCi4uLg0KDQoNCiMgUmVmZXJlbmNlcyB7LX0NCg0KRGF0YS53b3JsZA0KaHR0cHM6Ly9kYXRhLndvcmxkL2RhdGEtbnktZ292L3U2aHUtaDdwNQ0K